import ast
import json
import os

class py文件解析:
    """
    文件解析器负责读取 Python 文件并解析成 AST 结构。
    负责管理代码文件的 AST 结构解析。
    """
    def __init__(self, py文件绝地路径=None):
        self.py文件路径 = py文件绝地路径
        self.ast结构树 = None
        self.文件名 = None
        self.配置文件路径 = None
        self.配置文件=None
        if  self.py文件路径:
            self.读取py文件()
        else:
            print("文件不存在")
        #起始接口.容器 = 文件容器ast节点基础模型(起始接口,容器节点图形项管理器,场景 )
    def 读取py文件(self):
        """初始化文件，检查路径并解析 AST 结构"""
        文件夹路径, 文件名 = os.path.split(self.py文件路径)
        self.文件名 = 文件名
        self.配置文件路径 = os.path.join(文件夹路径, os.path.splitext(文件名)[0] + ".json")

        # 如果配置文件不存在则创建
        if not os.path.exists(self.配置文件路径):
            with open(self.配置文件路径, 'w') as 配置文件:
                json.dump({}, 配置文件)  # 创建一个空的 JSON 文件

        self.解析文件()

    def 解析文件(self):
        """读取 Python 文件并解析成 AST"""
        with open(self.py文件路径, "r", encoding="utf-8") as f:
            代码 = f.read()
        self.ast结构树 = ast.parse(代码,type_comments=True)

    def 加载配置文件(self):
        """加载对应的配置文件"""
        if self.配置文件路径:
            print(f"加载节点配置文件: {self.配置文件路径}")
            try:
                with open(self.配置文件路径, "r", encoding="utf-8") as f:
                    self.配置文件 = f.read()
                try:
                    return json.loads(self.配置文件)
                except json.JSONDecodeError as e:
                    print(f"配置文件解析错误: {e}")
                    self.配置文件={}
                    return {}
            except FileNotFoundError:
                print(f"未找到文件: {self.配置文件路径}")
                self.配置文件 = {}
                return {}
        else:
            print("节点配置文件路径未设置")
            self.配置文件 = {}
            return {}

